<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::outofcore::OutofcoreOctreeDiskContainer&lt; PointT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-static-methods">静态 Public 成员函数</a> &#124;
<a href="#pri-methods">Private 成员函数</a> &#124;
<a href="#pri-attribs">Private 属性</a> &#124;
<a href="#pri-static-attribs">静态 Private 属性</a> &#124;
<a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::outofcore::OutofcoreOctreeDiskContainer&lt; PointT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p>Class responsible for serialization and deserialization of out of core point data  
 <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="octree__disk__container_8h_source.html">octree_disk_container.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::outofcore::OutofcoreOctreeDiskContainer&lt; PointT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.png" usemap="#pcl::outofcore::OutofcoreOctreeDiskContainer_3C_20PointT_20_3E_map" alt=""/>
  <map id="pcl::outofcore::OutofcoreOctreeDiskContainer_3C_20PointT_20_3E_map" name="pcl::outofcore::OutofcoreOctreeDiskContainer_3C_20PointT_20_3E_map">
<area href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html" alt="pcl::outofcore::OutofcoreAbstractNodeContainer&lt; pcl::PointXYZ &gt;" shape="rect" coords="0,0,386,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a40eac2c2526ef5c5e24444130ae8c044"><td class="memItemLeft" align="right" valign="top"><a id="a40eac2c2526ef5c5e24444130ae8c044"></a>
typedef <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">OutofcoreAbstractNodeContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::AlignedPointTVector&#160;</td><td class="memItemRight" valign="bottom"><b>AlignedPointTVector</b></td></tr>
<tr class="separator:a40eac2c2526ef5c5e24444130ae8c044"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">pcl::outofcore::OutofcoreAbstractNodeContainer&lt; pcl::PointXYZ &gt;</a></td></tr>
<tr class="memitem:a09c4de5368f357c103f5f12665ee02b9 inherit pub_types_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="a09c4de5368f357c103f5f12665ee02b9"></a>
typedef std::vector&lt; <a class="el" href="structpcl_1_1_point_x_y_z.html">pcl::PointXYZ</a>, Eigen::aligned_allocator&lt; <a class="el" href="structpcl_1_1_point_x_y_z.html">pcl::PointXYZ</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>AlignedPointTVector</b></td></tr>
<tr class="separator:a09c4de5368f357c103f5f12665ee02b9 inherit pub_types_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a266bbaaa69949f0ee47b1c358424ca9a"><td class="memItemLeft" align="right" valign="top"><a id="a266bbaaa69949f0ee47b1c358424ca9a"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a266bbaaa69949f0ee47b1c358424ca9a">OutofcoreOctreeDiskContainer</a> ()</td></tr>
<tr class="memdesc:a266bbaaa69949f0ee47b1c358424ca9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor creates disk container and sets filename from random uuid string <br /></td></tr>
<tr class="separator:a266bbaaa69949f0ee47b1c358424ca9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a03a97baad5df0288f4a7a45677d1ce13"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a03a97baad5df0288f4a7a45677d1ce13">OutofcoreOctreeDiskContainer</a> (const boost::filesystem::path &amp;dir)</td></tr>
<tr class="memdesc:a03a97baad5df0288f4a7a45677d1ce13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates uuid named file or loads existing file  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a03a97baad5df0288f4a7a45677d1ce13">更多...</a><br /></td></tr>
<tr class="separator:a03a97baad5df0288f4a7a45677d1ce13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a876af56708ac6b5404707a8f326e968f"><td class="memItemLeft" align="right" valign="top"><a id="a876af56708ac6b5404707a8f326e968f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a876af56708ac6b5404707a8f326e968f">~OutofcoreOctreeDiskContainer</a> ()</td></tr>
<tr class="memdesc:a876af56708ac6b5404707a8f326e968f"><td class="mdescLeft">&#160;</td><td class="mdescRight">flushes write buffer, then frees memory <br /></td></tr>
<tr class="separator:a876af56708ac6b5404707a8f326e968f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac129093eca2afdf053d161b5f51079b0"><td class="memItemLeft" align="right" valign="top"><a id="ac129093eca2afdf053d161b5f51079b0"></a>
<a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ac129093eca2afdf053d161b5f51079b0">operator[]</a> (uint64_t idx) const</td></tr>
<tr class="memdesc:ac129093eca2afdf053d161b5f51079b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">provides random access to points based on a linear index <br /></td></tr>
<tr class="separator:ac129093eca2afdf053d161b5f51079b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af803a6e72d6dcf6326105a061ed6e0be"><td class="memItemLeft" align="right" valign="top"><a id="af803a6e72d6dcf6326105a061ed6e0be"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#af803a6e72d6dcf6326105a061ed6e0be">push_back</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;p)</td></tr>
<tr class="memdesc:af803a6e72d6dcf6326105a061ed6e0be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a single point to the buffer to be written to disk when the buffer grows sufficiently large, the object is destroyed, or the write buffer is manually flushed <br /></td></tr>
<tr class="separator:af803a6e72d6dcf6326105a061ed6e0be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f5ded611afa24277239f3c4f106191c"><td class="memItemLeft" align="right" valign="top"><a id="a5f5ded611afa24277239f3c4f106191c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a5f5ded611afa24277239f3c4f106191c">insertRange</a> (const AlignedPointTVector &amp;src)</td></tr>
<tr class="memdesc:a5f5ded611afa24277239f3c4f106191c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inserts a vector of points into the disk data structure <br /></td></tr>
<tr class="separator:a5f5ded611afa24277239f3c4f106191c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade335c44484e63cdaf4a030ede0f0efb"><td class="memItemLeft" align="right" valign="top"><a id="ade335c44484e63cdaf4a030ede0f0efb"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ade335c44484e63cdaf4a030ede0f0efb">insertRange</a> (const pcl::PCLPointCloud2::Ptr &amp;input_cloud)</td></tr>
<tr class="memdesc:ade335c44484e63cdaf4a030ede0f0efb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inserts a <a class="el" href="structpcl_1_1_p_c_l_point_cloud2.html">PCLPointCloud2</a> object directly into the disk container <br /></td></tr>
<tr class="separator:ade335c44484e63cdaf4a030ede0f0efb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0f5e4567b4c60bfb4044c087081e83c"><td class="memItemLeft" align="right" valign="top"><a id="aa0f5e4567b4c60bfb4044c087081e83c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>insertRange</b> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> *const *start, const uint64_t count)</td></tr>
<tr class="separator:aa0f5e4567b4c60bfb4044c087081e83c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a287f65f0bfdcdc1720ccb370c0d3cf72"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a287f65f0bfdcdc1720ccb370c0d3cf72">insertRange</a> (const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> *start, const uint64_t count)</td></tr>
<tr class="memdesc:a287f65f0bfdcdc1720ccb370c0d3cf72"><td class="mdescLeft">&#160;</td><td class="mdescRight">This is the primary method for serialization of blocks of point data. This is called by the outofcore octree interface, opens the binary file for appending data, and writes it to disk.  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a287f65f0bfdcdc1720ccb370c0d3cf72">更多...</a><br /></td></tr>
<tr class="separator:a287f65f0bfdcdc1720ccb370c0d3cf72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff75e94707865b35c4819757087f00ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#aff75e94707865b35c4819757087f00ea">readRange</a> (const uint64_t start, const uint64_t count, AlignedPointTVector &amp;dst)</td></tr>
<tr class="memdesc:aff75e94707865b35c4819757087f00ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads <b>count</b> points into memory from the disk container  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#aff75e94707865b35c4819757087f00ea">更多...</a><br /></td></tr>
<tr class="separator:aff75e94707865b35c4819757087f00ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46bbe65ef7995faaf7ed7ddd02d1d2c8"><td class="memItemLeft" align="right" valign="top"><a id="a46bbe65ef7995faaf7ed7ddd02d1d2c8"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>readRange</b> (const uint64_t, const uint64_t, pcl::PCLPointCloud2::Ptr &amp;dst)</td></tr>
<tr class="separator:a46bbe65ef7995faaf7ed7ddd02d1d2c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16d8362cb9251a1e20a43e60ddc032b8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a16d8362cb9251a1e20a43e60ddc032b8">read</a> (pcl::PCLPointCloud2::Ptr &amp;output_cloud)</td></tr>
<tr class="memdesc:a16d8362cb9251a1e20a43e60ddc032b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the entire point contents from disk into <code>output_cloud</code>  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a16d8362cb9251a1e20a43e60ddc032b8">更多...</a><br /></td></tr>
<tr class="separator:a16d8362cb9251a1e20a43e60ddc032b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19ee1979af2203b4ce769ca23dde804f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a19ee1979af2203b4ce769ca23dde804f">readRangeSubSample</a> (const uint64_t start, const uint64_t count, const double percent, AlignedPointTVector &amp;dst)</td></tr>
<tr class="memdesc:a19ee1979af2203b4ce769ca23dde804f"><td class="mdescLeft">&#160;</td><td class="mdescRight">grab percent*count random points. points are <b>not</b> guaranteed to be unique (could have multiple identical points!)  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a19ee1979af2203b4ce769ca23dde804f">更多...</a><br /></td></tr>
<tr class="separator:a19ee1979af2203b4ce769ca23dde804f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af18d037b7f1f1df2b0974fa1a8dba2f0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#af18d037b7f1f1df2b0974fa1a8dba2f0">readRangeSubSample_bernoulli</a> (const uint64_t start, const uint64_t count, const double percent, AlignedPointTVector &amp;dst)</td></tr>
<tr class="memdesc:af18d037b7f1f1df2b0974fa1a8dba2f0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Use bernoulli trials to select points. All points selected will be unique.  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#af18d037b7f1f1df2b0974fa1a8dba2f0">更多...</a><br /></td></tr>
<tr class="separator:af18d037b7f1f1df2b0974fa1a8dba2f0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17b1c4c512e5103b8409d4a2f482fea2"><td class="memItemLeft" align="right" valign="top"><a id="a17b1c4c512e5103b8409d4a2f482fea2"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a17b1c4c512e5103b8409d4a2f482fea2">size</a> () const</td></tr>
<tr class="memdesc:a17b1c4c512e5103b8409d4a2f482fea2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the total number of points for which this container is responsible, <code>filelen_</code> + points in <code>writebuff_</code> that have not yet been flushed to the disk <br /></td></tr>
<tr class="separator:a17b1c4c512e5103b8409d4a2f482fea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2fda725ccb5f59610c1199697f7ca8f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab2fda725ccb5f59610c1199697f7ca8f">empty</a> () const</td></tr>
<tr class="memdesc:ab2fda725ccb5f59610c1199697f7ca8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">STL-like empty test  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab2fda725ccb5f59610c1199697f7ca8f">更多...</a><br /></td></tr>
<tr class="separator:ab2fda725ccb5f59610c1199697f7ca8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b245ee6400f75ac7404caa48079f989"><td class="memItemLeft" align="right" valign="top"><a id="a1b245ee6400f75ac7404caa48079f989"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a1b245ee6400f75ac7404caa48079f989">flush</a> (const bool force_cache_dealloc)</td></tr>
<tr class="memdesc:a1b245ee6400f75ac7404caa48079f989"><td class="mdescLeft">&#160;</td><td class="mdescRight">Exposed functionality for manually flushing the write buffer during tree creation <br /></td></tr>
<tr class="separator:a1b245ee6400f75ac7404caa48079f989"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3e79e1e42274e1dc81360be575e057e"><td class="memItemLeft" align="right" valign="top"><a id="ab3e79e1e42274e1dc81360be575e057e"></a>
std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a> ()</td></tr>
<tr class="memdesc:ab3e79e1e42274e1dc81360be575e057e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns this objects path name <br /></td></tr>
<tr class="separator:ab3e79e1e42274e1dc81360be575e057e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac65302b3d7b9dd2e03ab4307ce8f2b75"><td class="memItemLeft" align="right" valign="top"><a id="ac65302b3d7b9dd2e03ab4307ce8f2b75"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>clear</b> ()</td></tr>
<tr class="separator:ac65302b3d7b9dd2e03ab4307ce8f2b75"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac25ad9bae038c60a208c7d94d4f33b2a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ac25ad9bae038c60a208c7d94d4f33b2a">convertToXYZ</a> (const boost::filesystem::path &amp;<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a>)</td></tr>
<tr class="memdesc:ac25ad9bae038c60a208c7d94d4f33b2a"><td class="mdescLeft">&#160;</td><td class="mdescRight">write points to disk as ascii  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ac25ad9bae038c60a208c7d94d4f33b2a">更多...</a><br /></td></tr>
<tr class="separator:ac25ad9bae038c60a208c7d94d4f33b2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5c265c313befc9a42af3356b5ac5314"><td class="memItemLeft" align="right" valign="top"><a id="ae5c265c313befc9a42af3356b5ac5314"></a>
boost::uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ae5c265c313befc9a42af3356b5ac5314">getDataSize</a> () const</td></tr>
<tr class="memdesc:ae5c265c313befc9a42af3356b5ac5314"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of points in the PCD file by reading the PCD header. <br /></td></tr>
<tr class="separator:ae5c265c313befc9a42af3356b5ac5314"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">pcl::outofcore::OutofcoreAbstractNodeContainer&lt; pcl::PointXYZ &gt;</a></td></tr>
<tr class="memitem:aa984358428a47469cd695d1895bfb6c4 inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="aa984358428a47469cd695d1895bfb6c4"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>OutofcoreAbstractNodeContainer</b> (const boost::filesystem::path &amp;)</td></tr>
<tr class="separator:aa984358428a47469cd695d1895bfb6c4 inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe78013854fa427e17492815ab2fa6c7 inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="afe78013854fa427e17492815ab2fa6c7"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>insertRange</b> (const <a class="el" href="structpcl_1_1_point_x_y_z.html">pcl::PointXYZ</a> *start, const uint64_t count)=0</td></tr>
<tr class="separator:afe78013854fa427e17492815ab2fa6c7 inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f4d77cf158f2d9b800883252045ee9f inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="a9f4d77cf158f2d9b800883252045ee9f"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>insertRange</b> (const <a class="el" href="structpcl_1_1_point_x_y_z.html">pcl::PointXYZ</a> *const *start, const uint64_t count)=0</td></tr>
<tr class="separator:a9f4d77cf158f2d9b800883252045ee9f inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80496f334b64c325154a895318362da7 inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="a80496f334b64c325154a895318362da7"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>readRange</b> (const uint64_t start, const uint64_t count, AlignedPointTVector &amp;v)=0</td></tr>
<tr class="separator:a80496f334b64c325154a895318362da7 inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f480a07adcffd9e02d8089ee2421806 inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="a3f480a07adcffd9e02d8089ee2421806"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>readRangeSubSample</b> (const uint64_t start, const uint64_t count, const double percent, AlignedPointTVector &amp;v)=0</td></tr>
<tr class="separator:a3f480a07adcffd9e02d8089ee2421806 inherit pub_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
<tr class="memitem:a46694ebbc0a66c66077e912130f9b04a"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a46694ebbc0a66c66077e912130f9b04a">getRandomUUIDString</a> (std::string &amp;s)</td></tr>
<tr class="memdesc:a46694ebbc0a66c66077e912130f9b04a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a universally unique identifier (UUID)  <a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a46694ebbc0a66c66077e912130f9b04a">更多...</a><br /></td></tr>
<tr class="separator:a46694ebbc0a66c66077e912130f9b04a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private 成员函数</h2></td></tr>
<tr class="memitem:ac874d708a65fcb7d28e53240aeac006b"><td class="memItemLeft" align="right" valign="top"><a id="ac874d708a65fcb7d28e53240aeac006b"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>OutofcoreOctreeDiskContainer</b> (const <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">OutofcoreOctreeDiskContainer</a> &amp;)</td></tr>
<tr class="separator:ac874d708a65fcb7d28e53240aeac006b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a969ef78e40fc1136f03f0444aaa5ee37"><td class="memItemLeft" align="right" valign="top"><a id="a969ef78e40fc1136f03f0444aaa5ee37"></a>
<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">OutofcoreOctreeDiskContainer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">OutofcoreOctreeDiskContainer</a> &amp;)</td></tr>
<tr class="separator:a969ef78e40fc1136f03f0444aaa5ee37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8babde4aea1a652b4fdc9124a5178d8e"><td class="memItemLeft" align="right" valign="top"><a id="a8babde4aea1a652b4fdc9124a5178d8e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>flushWritebuff</b> (const bool force_cache_dealloc)</td></tr>
<tr class="separator:a8babde4aea1a652b4fdc9124a5178d8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private 属性</h2></td></tr>
<tr class="memitem:a9b40c31888d5477c0e55223b8f66e602"><td class="memItemLeft" align="right" valign="top"><a id="a9b40c31888d5477c0e55223b8f66e602"></a>
boost::shared_ptr&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a></td></tr>
<tr class="memdesc:a9b40c31888d5477c0e55223b8f66e602"><td class="mdescLeft">&#160;</td><td class="mdescRight">Name of the storage file on disk (i.e., the PCD file) <br /></td></tr>
<tr class="separator:a9b40c31888d5477c0e55223b8f66e602"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a312a965971af17c5376ccde869c0a3b0"><td class="memItemLeft" align="right" valign="top"><a id="a312a965971af17c5376ccde869c0a3b0"></a>
uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>filelen_</b></td></tr>
<tr class="separator:a312a965971af17c5376ccde869c0a3b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a947d22c3286be3196ee238eb72cc6572"><td class="memItemLeft" align="right" valign="top"><a id="a947d22c3286be3196ee238eb72cc6572"></a>
AlignedPointTVector&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">writebuff_</a></td></tr>
<tr class="memdesc:a947d22c3286be3196ee238eb72cc6572"><td class="mdescLeft">&#160;</td><td class="mdescRight">elements [0,...,<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a17b1c4c512e5103b8409d4a2f482fea2" title="Returns the total number of points for which this container is responsible, filelen_ + points in writ...">size()</a>-1] map to [filelen, ..., filelen + <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a17b1c4c512e5103b8409d4a2f482fea2" title="Returns the total number of points for which this container is responsible, filelen_ + points in writ...">size()</a>-1] <br /></td></tr>
<tr class="separator:a947d22c3286be3196ee238eb72cc6572"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-attribs"></a>
静态 Private 属性</h2></td></tr>
<tr class="memitem:ac87b4f0b27305c7c541cc288bc9c2d26"><td class="memItemLeft" align="right" valign="top"><a id="ac87b4f0b27305c7c541cc288bc9c2d26"></a>
static const uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>READ_BLOCK_SIZE_</b> = static_cast&lt;uint64_t&gt; (2e12)</td></tr>
<tr class="separator:ac87b4f0b27305c7c541cc288bc9c2d26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbd660cffb0612ef79853456c11cc0d6"><td class="memItemLeft" align="right" valign="top"><a id="abbd660cffb0612ef79853456c11cc0d6"></a>
static const uint64_t&#160;</td><td class="memItemRight" valign="bottom"><b>WRITE_BUFF_MAX_</b> = static_cast&lt;uint64_t&gt; (2e12)</td></tr>
<tr class="separator:abbd660cffb0612ef79853456c11cc0d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b784d4673528003d37a2b5d27e317ce"><td class="memItemLeft" align="right" valign="top"><a id="a1b784d4673528003d37a2b5d27e317ce"></a>
static boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><b>rng_mutex_</b></td></tr>
<tr class="separator:a1b784d4673528003d37a2b5d27e317ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad63e7542056c5148886056c9f0ff5551"><td class="memItemLeft" align="right" valign="top"><a id="ad63e7542056c5148886056c9f0ff5551"></a>
static boost::mt19937&#160;</td><td class="memItemRight" valign="bottom"><b>rand_gen_</b></td></tr>
<tr class="separator:ad63e7542056c5148886056c9f0ff5551"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae03b316134e5a57b7f2ae078676470ab"><td class="memItemLeft" align="right" valign="top"><a id="ae03b316134e5a57b7f2ae078676470ab"></a>
static boost::uuids::random_generator&#160;</td><td class="memItemRight" valign="bottom"><b>uuid_gen_</b></td></tr>
<tr class="separator:ae03b316134e5a57b7f2ae078676470ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
额外继承的成员函数</h2></td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">pcl::outofcore::OutofcoreAbstractNodeContainer&lt; pcl::PointXYZ &gt;</a></td></tr>
<tr class="memitem:a73afd29673269e52641c5a8dee3c7274 inherit pro_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="a73afd29673269e52641c5a8dee3c7274"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>OutofcoreAbstractNodeContainer</b> (const <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">OutofcoreAbstractNodeContainer</a> &amp;rval)</td></tr>
<tr class="separator:a73afd29673269e52641c5a8dee3c7274 inherit pro_methods_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">pcl::outofcore::OutofcoreAbstractNodeContainer&lt; pcl::PointXYZ &gt;</a></td></tr>
<tr class="memitem:a7f9449db321a9bb5770bca5bc993234e inherit pro_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="a7f9449db321a9bb5770bca5bc993234e"></a>
AlignedPointTVector&#160;</td><td class="memItemRight" valign="bottom"><b>container_</b></td></tr>
<tr class="separator:a7f9449db321a9bb5770bca5bc993234e inherit pro_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td colspan="2" onclick="javascript:toggleInherit('pro_static_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container')"><img src="closed.png" alt="-"/>&#160;静态 Protected 属性 继承自 <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">pcl::outofcore::OutofcoreAbstractNodeContainer&lt; pcl::PointXYZ &gt;</a></td></tr>
<tr class="memitem:ae9e882a7c9599ae87412660aa5153a1f inherit pro_static_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="ae9e882a7c9599ae87412660aa5153a1f"></a>
static boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><b>rng_mutex_</b></td></tr>
<tr class="separator:ae9e882a7c9599ae87412660aa5153a1f inherit pro_static_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3c4ef9899b85a43070b2951a32862808 inherit pro_static_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memItemLeft" align="right" valign="top"><a id="a3c4ef9899b85a43070b2951a32862808"></a>
static boost::mt19937&#160;</td><td class="memItemRight" valign="bottom"><b>rand_gen_</b></td></tr>
<tr class="separator:a3c4ef9899b85a43070b2951a32862808 inherit pro_static_attribs_classpcl_1_1outofcore_1_1_outofcore_abstract_node_container"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT = pcl::PointXYZ&gt;<br />
class pcl::outofcore::OutofcoreOctreeDiskContainer&lt; PointT &gt;</h3>

<p>Class responsible for serialization and deserialization of out of core point data </p>
<dl class="section note"><dt>注解</dt><dd>Code was adapted from the Urban Robotics out of core octree implementation. Contact Jacob Schloss <a href="#" onclick="location.href='mai'+'lto:'+'jac'+'ob'+'.sc'+'hl'+'oss'+'@u'+'rba'+'nr'+'obo'+'ti'+'cs.'+'ne'+'t'; return false;">jacob<span style="display: none;">.nosp@m.</span>.sch<span style="display: none;">.nosp@m.</span>loss@<span style="display: none;">.nosp@m.</span>urba<span style="display: none;">.nosp@m.</span>nrobo<span style="display: none;">.nosp@m.</span>tics<span style="display: none;">.nosp@m.</span>.net</a> with any questions. <a href="http://www.urbanrobotics.net/">http://www.urbanrobotics.net/</a></dd></dl>
<dl class="section author"><dt>作者</dt><dd>Jacob Schloss (<a href="#" onclick="location.href='mai'+'lto:'+'jac'+'ob'+'.sc'+'hl'+'oss'+'@u'+'rba'+'nr'+'obo'+'ti'+'cs.'+'ne'+'t'; return false;">jacob<span style="display: none;">.nosp@m.</span>.sch<span style="display: none;">.nosp@m.</span>loss@<span style="display: none;">.nosp@m.</span>urba<span style="display: none;">.nosp@m.</span>nrobo<span style="display: none;">.nosp@m.</span>tics<span style="display: none;">.nosp@m.</span>.net</a>) </dd></dl>
</div><h2 class="groupheader">构造及析构函数说明</h2>
<a id="a03a97baad5df0288f4a7a45677d1ce13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a03a97baad5df0288f4a7a45677d1ce13">&#9670;&nbsp;</a></span>OutofcoreOctreeDiskContainer()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">OutofcoreOctreeDiskContainer</a> </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>dir</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates uuid named file or loads existing file </p>
<p>If <b>dir</b> is a directory, this constructor will create a new uuid named file; if <b>dir</b> is an existing file, it will load the file metadata for accessing the tree.</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">dir</td><td>Path to the tree. If it is a directory, it will create the metadata. If it is a file, it will load the metadata into memory. </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;      : <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a> ()</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;      , filelen_ (0)</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;      , <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">writebuff_</a> (0)</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    {</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;      <span class="keywordflow">if</span> (boost::filesystem::exists (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a>))</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;      {</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;        <span class="keywordflow">if</span> (boost::filesystem::is_directory (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a>))</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        {</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;          std::string uuid;</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a46694ebbc0a66c66077e912130f9b04a">getRandomUUIDString</a> (uuid);</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;          boost::filesystem::path filename (uuid);</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;          boost::filesystem::path file = <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a> / filename;</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a> = boost::shared_ptr&lt;std::string&gt; (<span class="keyword">new</span> std::string (file.string ()));</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        }</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;        <span class="keywordflow">else</span></div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        {</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;          uint64_t len = boost::filesystem::file_size (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a>);</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;          <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a> = boost::shared_ptr&lt;std::string&gt; (<span class="keyword">new</span> std::string (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a>.string ()));</div>
<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160; </div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;          filelen_ = len / <span class="keyword">sizeof</span>(<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>);</div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;          <a class="code" href="structpcl_1_1_p_c_l_point_cloud2.html">pcl::PCLPointCloud2</a> cloud_info;</div>
<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;          Eigen::Vector4f origin;</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;          Eigen::Quaternionf orientation;</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;          <span class="keywordtype">int</span> pcd_version;</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;          <span class="keywordtype">int</span> data_type;</div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> data_index;</div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;          </div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;          <span class="comment">//read the header of the pcd file and get the number of points</span></div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;          PCDReader reader;</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;          reader.readHeader (*<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>, cloud_info, origin, orientation, pcd_version, data_type, data_index, 0);</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;          </div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;          filelen_ = cloud_info.width * cloud_info.height;</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;        }</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;      }</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;      <span class="keywordflow">else</span> <span class="comment">//path doesn&#39;t exist</span></div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;      {</div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a> = boost::shared_ptr&lt;std::string&gt; (<span class="keyword">new</span> std::string (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a>.string ()));</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;        filelen_ = 0;</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;      }</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_disk_container_html_a46694ebbc0a66c66077e912130f9b04a"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a46694ebbc0a66c66077e912130f9b04a">pcl::outofcore::OutofcoreOctreeDiskContainer::getRandomUUIDString</a></div><div class="ttdeci">static void getRandomUUIDString(std::string &amp;s)</div><div class="ttdoc">Generate a universally unique identifier (UUID)</div><div class="ttdef"><b>Definition:</b> octree_disk_container.hpp:85</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_disk_container_html_a947d22c3286be3196ee238eb72cc6572"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">pcl::outofcore::OutofcoreOctreeDiskContainer::writebuff_</a></div><div class="ttdeci">AlignedPointTVector writebuff_</div><div class="ttdoc">elements [0,...,size()-1] map to [filelen, ..., filelen + size()-1]</div><div class="ttdef"><b>Definition:</b> octree_disk_container.h:291</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_disk_container_html_a9b40c31888d5477c0e55223b8f66e602"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">pcl::outofcore::OutofcoreOctreeDiskContainer::disk_storage_filename_</a></div><div class="ttdeci">boost::shared_ptr&lt; std::string &gt; disk_storage_filename_</div><div class="ttdoc">Name of the storage file on disk (i.e., the PCD file)</div><div class="ttdef"><b>Definition:</b> octree_disk_container.h:283</div></div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_disk_container_html_ab3e79e1e42274e1dc81360be575e057e"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">pcl::outofcore::OutofcoreOctreeDiskContainer::path</a></div><div class="ttdeci">std::string &amp; path()</div><div class="ttdoc">Returns this objects path name</div><div class="ttdef"><b>Definition:</b> octree_disk_container.h:199</div></div>
<div class="ttc" id="astructpcl_1_1_p_c_l_point_cloud2_html"><div class="ttname"><a href="structpcl_1_1_p_c_l_point_cloud2.html">pcl::PCLPointCloud2</a></div><div class="ttdef"><b>Definition:</b> PCLPointCloud2.h:21</div></div>
<div class="ttc" id="astructpcl_1_1_point_x_y_z_r_g_b_a_html"><div class="ttname"><a href="structpcl_1_1_point_x_y_z_r_g_b_a.html">pcl::PointXYZRGBA</a></div><div class="ttdoc">A point structure representing Euclidean xyz coordinates, and the RGBA color.</div><div class="ttdef"><b>Definition:</b> point_types.hpp:540</div></div>
</div><!-- fragment -->
</div>
</div>
<h2 class="groupheader">成员函数说明</h2>
<a id="ac25ad9bae038c60a208c7d94d4f33b2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac25ad9bae038c60a208c7d94d4f33b2a">&#9670;&nbsp;</a></span>convertToXYZ()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT  = pcl::PointXYZ&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::convertToXYZ </td>
          <td>(</td>
          <td class="paramtype">const boost::filesystem::path &amp;&#160;</td>
          <td class="paramname"><em>path</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>write points to disk as ascii </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">path</td><td></td></tr>
  </table>
  </dd>
</dl>

<p>实现了 <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">pcl::outofcore::OutofcoreAbstractNodeContainer&lt; pcl::PointXYZ &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;        {</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;          <span class="keywordflow">if</span> (boost::filesystem::exists (*<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>))</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;          {</div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;            FILE* fxyz = fopen (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#ab3e79e1e42274e1dc81360be575e057e">path</a>.string ().c_str (), <span class="stringliteral">&quot;w&quot;</span>);</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160; </div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;            FILE* f = fopen (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>-&gt;c_str (), <span class="stringliteral">&quot;rb&quot;</span>);</div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;            assert (f != NULL);</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160; </div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;            uint64_t num = <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a17b1c4c512e5103b8409d4a2f482fea2">size</a> ();</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;            <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> p;</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;            <span class="keywordtype">char</span>* loc = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span> ( &amp;p );</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160; </div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;            <span class="keywordflow">for</span> (uint64_t i = 0; i &lt; num; i++)</div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;            {</div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;              <span class="keywordtype">int</span> seekret = _fseeki64 (f, i * <span class="keyword">sizeof</span> (<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>), SEEK_SET);</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;              (void)seekret;</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;              assert (seekret == 0);</div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;              <span class="keywordtype">size_t</span> readlen = fread (loc, <span class="keyword">sizeof</span> (<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>), 1, f);</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;              (void)readlen;</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;              assert (readlen == 1);</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160; </div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;              <span class="comment">//of &lt;&lt; p.x &lt;&lt; &quot;\t&quot; &lt;&lt; p.y &lt;&lt; &quot;\t&quot; &lt;&lt; p.z &lt;&lt; &quot;\n&quot;;</span></div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;              std::stringstream ss;</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;              ss &lt;&lt; std::fixed;</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;              ss.precision (16);</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;              ss &lt;&lt; p.x &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; p.y &lt;&lt; <span class="stringliteral">&quot;\t&quot;</span> &lt;&lt; p.z &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160; </div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;              fwrite (ss.str ().c_str (), 1, ss.str ().size (), fxyz);</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;            }</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;            <span class="keywordtype">int</span> res = fclose (f);</div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;            (void)res;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;            assert (res == 0);</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;            res = fclose (fxyz);</div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;            assert (res == 0);</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;          }</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;        }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_disk_container_html_a17b1c4c512e5103b8409d4a2f482fea2"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a17b1c4c512e5103b8409d4a2f482fea2">pcl::outofcore::OutofcoreOctreeDiskContainer::size</a></div><div class="ttdeci">uint64_t size() const</div><div class="ttdoc">Returns the total number of points for which this container is responsible, filelen_ + points in writ...</div><div class="ttdef"><b>Definition:</b> octree_disk_container.h:177</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ab2fda725ccb5f59610c1199697f7ca8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2fda725ccb5f59610c1199697f7ca8f">&#9670;&nbsp;</a></span>empty()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT  = pcl::PointXYZ&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::empty </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>STL-like empty test </p>
<dl class="section return"><dt>返回</dt><dd>true if container has no data on disk or waiting to be written in <code>writebuff_</code> </dd></dl>

<p>实现了 <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_abstract_node_container.html">pcl::outofcore::OutofcoreAbstractNodeContainer&lt; pcl::PointXYZ &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;        {</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;          <span class="keywordflow">return</span> ((filelen_ == 0) &amp;&amp; <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">writebuff_</a>.empty ());</div>
<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;        }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a46694ebbc0a66c66077e912130f9b04a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46694ebbc0a66c66077e912130f9b04a">&#9670;&nbsp;</a></span>getRandomUUIDString()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::getRandomUUIDString </td>
          <td>(</td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Generate a universally unique identifier (UUID) </p>
<p>A mutex lock happens to ensure uniquness </p>
<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;    {</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;      boost::uuids::uuid u;</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      {</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;        boost::mutex::scoped_lock lock (rng_mutex_);</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;        u = uuid_gen_ ();</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;      }</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;      std::stringstream ss;</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;      ss &lt;&lt; u;</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;      s = ss.str ();</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a287f65f0bfdcdc1720ccb370c0d3cf72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a287f65f0bfdcdc1720ccb370c0d3cf72">&#9670;&nbsp;</a></span>insertRange()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::insertRange </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> *&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This is the primary method for serialization of blocks of point data. This is called by the outofcore octree interface, opens the binary file for appending data, and writes it to disk. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>address of the first point to insert </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>offset from start of the last point to insert </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00630"></a><span class="lineno">  630</span>&#160;    {</div>
<div class="line"><a name="l00631"></a><span class="lineno">  631</span>&#160;      <span class="keyword">typename</span> pcl::PointCloud&lt;PointT&gt;::Ptr tmp_cloud (<span class="keyword">new</span> <a class="code" href="classpcl_1_1_point_cloud.html">pcl::PointCloud&lt;PointT&gt;</a> ());</div>
<div class="line"><a name="l00632"></a><span class="lineno">  632</span>&#160; </div>
<div class="line"><a name="l00633"></a><span class="lineno">  633</span>&#160;      <span class="comment">// If there&#39;s a pcd file with data, read it in from disk for appending</span></div>
<div class="line"><a name="l00634"></a><span class="lineno">  634</span>&#160;      <span class="keywordflow">if</span> (boost::filesystem::exists (*<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>))</div>
<div class="line"><a name="l00635"></a><span class="lineno">  635</span>&#160;      {</div>
<div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;        <a class="code" href="classpcl_1_1_p_c_d_reader.html">pcl::PCDReader</a> reader;</div>
<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;        <span class="comment">// Open it</span></div>
<div class="line"><a name="l00638"></a><span class="lineno">  638</span>&#160;        <span class="keywordtype">int</span> res = reader.<a class="code" href="classpcl_1_1_p_c_d_reader.html#a21f154e8ce3f4d5e905ecaa395935c42">read</a> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>-&gt;c_str (), *tmp_cloud);</div>
<div class="line"><a name="l00639"></a><span class="lineno">  639</span>&#160;        (void)res; </div>
<div class="line"><a name="l00640"></a><span class="lineno">  640</span>&#160;        assert (res == 0);</div>
<div class="line"><a name="l00641"></a><span class="lineno">  641</span>&#160;      }</div>
<div class="line"><a name="l00642"></a><span class="lineno">  642</span>&#160;      <span class="keywordflow">else</span> <span class="comment">//otherwise create the pcd file</span></div>
<div class="line"><a name="l00643"></a><span class="lineno">  643</span>&#160;      {</div>
<div class="line"><a name="l00644"></a><span class="lineno">  644</span>&#160;        tmp_cloud-&gt;width = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span> (count) + <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span> (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">writebuff_</a>.size ());</div>
<div class="line"><a name="l00645"></a><span class="lineno">  645</span>&#160;        tmp_cloud-&gt;height = 1;</div>
<div class="line"><a name="l00646"></a><span class="lineno">  646</span>&#160;      }            </div>
<div class="line"><a name="l00647"></a><span class="lineno">  647</span>&#160; </div>
<div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;      <span class="comment">// Add any points in the cache</span></div>
<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">writebuff_</a>.size (); i++)</div>
<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;      {</div>
<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;        tmp_cloud-&gt;points.push_back (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">writebuff_</a> [i]);</div>
<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;      }</div>
<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160; </div>
<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;      <span class="comment">//add the new points passed with this function</span></div>
<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; count; i++)</div>
<div class="line"><a name="l00656"></a><span class="lineno">  656</span>&#160;      {</div>
<div class="line"><a name="l00657"></a><span class="lineno">  657</span>&#160;        tmp_cloud-&gt;points.push_back (*(start + i));</div>
<div class="line"><a name="l00658"></a><span class="lineno">  658</span>&#160;      }</div>
<div class="line"><a name="l00659"></a><span class="lineno">  659</span>&#160; </div>
<div class="line"><a name="l00660"></a><span class="lineno">  660</span>&#160;      tmp_cloud-&gt;width = <span class="keyword">static_cast&lt;</span>uint32_t<span class="keyword">&gt;</span> (tmp_cloud-&gt;points.size ());</div>
<div class="line"><a name="l00661"></a><span class="lineno">  661</span>&#160;      tmp_cloud-&gt;height = 1;</div>
<div class="line"><a name="l00662"></a><span class="lineno">  662</span>&#160;            </div>
<div class="line"><a name="l00663"></a><span class="lineno">  663</span>&#160;      <span class="comment">//save and close</span></div>
<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;      PCDWriter writer;</div>
<div class="line"><a name="l00665"></a><span class="lineno">  665</span>&#160; </div>
<div class="line"><a name="l00666"></a><span class="lineno">  666</span>&#160;      <span class="keywordtype">int</span> res = writer.writeBinaryCompressed (*<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>, *tmp_cloud);</div>
<div class="line"><a name="l00667"></a><span class="lineno">  667</span>&#160;      (void)res;</div>
<div class="line"><a name="l00668"></a><span class="lineno">  668</span>&#160;      assert (res == 0);</div>
<div class="line"><a name="l00669"></a><span class="lineno">  669</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1_p_c_d_reader_html"><div class="ttname"><a href="classpcl_1_1_p_c_d_reader.html">pcl::PCDReader</a></div><div class="ttdoc">Point Cloud Data (PCD) file format reader.</div><div class="ttdef"><b>Definition:</b> pcd_io.h:53</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_d_reader_html_a21f154e8ce3f4d5e905ecaa395935c42"><div class="ttname"><a href="classpcl_1_1_p_c_d_reader.html#a21f154e8ce3f4d5e905ecaa395935c42">pcl::PCDReader::read</a></div><div class="ttdeci">int read(const std::string &amp;file_name, pcl::PCLPointCloud2 &amp;cloud, Eigen::Vector4f &amp;origin, Eigen::Quaternionf &amp;orientation, int &amp;pcd_version, const int offset=0)</div><div class="ttdoc">Read a point cloud data from a PCD file and store it into a pcl/PCLPointCloud2.</div></div>
<div class="ttc" id="aclasspcl_1_1_point_cloud_html"><div class="ttname"><a href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a></div><div class="ttdoc">PointCloud represents the base class in PCL for storing collections of 3D points.</div><div class="ttdef"><b>Definition:</b> point_cloud.h:173</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a16d8362cb9251a1e20a43e60ddc032b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16d8362cb9251a1e20a43e60ddc032b8">&#9670;&nbsp;</a></span>read()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::read </td>
          <td>(</td>
          <td class="paramtype">pcl::PCLPointCloud2::Ptr &amp;&#160;</td>
          <td class="paramname"><em>output_cloud</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads the entire point contents from disk into <code>output_cloud</code> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">output_cloud</td><td></td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;    {</div>
<div class="line"><a name="l00579"></a><span class="lineno">  579</span>&#160;      pcl::PCLPointCloud2::Ptr temp_output_cloud (<span class="keyword">new</span> <a class="code" href="structpcl_1_1_p_c_l_point_cloud2.html">pcl::PCLPointCloud2</a> ());</div>
<div class="line"><a name="l00580"></a><span class="lineno">  580</span>&#160; </div>
<div class="line"><a name="l00581"></a><span class="lineno">  581</span>&#160;      <span class="keywordflow">if</span> (boost::filesystem::exists (*<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>))</div>
<div class="line"><a name="l00582"></a><span class="lineno">  582</span>&#160;      {</div>
<div class="line"><a name="l00583"></a><span class="lineno">  583</span>&#160;<span class="comment">//            PCL_INFO (&quot;[pcl::outofcore::OutofcoreOctreeDiskContainer::%s] Reading points from disk from %s.\n&quot;, __FUNCTION__ , disk_storage_filename_-&gt;c_str ());</span></div>
<div class="line"><a name="l00584"></a><span class="lineno">  584</span>&#160;        <span class="keywordtype">int</span> res = pcl::io::loadPCDFile (*<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>, *temp_output_cloud);</div>
<div class="line"><a name="l00585"></a><span class="lineno">  585</span>&#160;        (void)res;</div>
<div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;        assert (res != -1);</div>
<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;        <span class="keywordflow">if</span>(res == -1)</div>
<div class="line"><a name="l00588"></a><span class="lineno">  588</span>&#160;          <span class="keywordflow">return</span> (-1);</div>
<div class="line"><a name="l00589"></a><span class="lineno">  589</span>&#160;      }</div>
<div class="line"><a name="l00590"></a><span class="lineno">  590</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00591"></a><span class="lineno">  591</span>&#160;      {</div>
<div class="line"><a name="l00592"></a><span class="lineno">  592</span>&#160;        PCL_ERROR (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeDiskContainer::%s] File %s does not exist in node.\n&quot;</span>, __FUNCTION__, <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>-&gt;c_str ()); </div>
<div class="line"><a name="l00593"></a><span class="lineno">  593</span>&#160;        <span class="keywordflow">return</span> (-1);</div>
<div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;      }</div>
<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160; </div>
<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;      <span class="keywordflow">if</span>(output_cloud.get () != 0)</div>
<div class="line"><a name="l00597"></a><span class="lineno">  597</span>&#160;      {</div>
<div class="line"><a name="l00598"></a><span class="lineno">  598</span>&#160;        <a class="code" href="group__common.html#gaaebfbeb8e50f90057188131228b2e8b6">pcl::concatenatePointCloud</a> (*output_cloud, *temp_output_cloud, *output_cloud);</div>
<div class="line"><a name="l00599"></a><span class="lineno">  599</span>&#160;      }</div>
<div class="line"><a name="l00600"></a><span class="lineno">  600</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00601"></a><span class="lineno">  601</span>&#160;      {</div>
<div class="line"><a name="l00602"></a><span class="lineno">  602</span>&#160;        output_cloud = temp_output_cloud;</div>
<div class="line"><a name="l00603"></a><span class="lineno">  603</span>&#160;      }</div>
<div class="line"><a name="l00604"></a><span class="lineno">  604</span>&#160;      <span class="keywordflow">return</span> (0);</div>
<div class="line"><a name="l00605"></a><span class="lineno">  605</span>&#160;    }</div>
<div class="ttc" id="agroup__common_html_gaaebfbeb8e50f90057188131228b2e8b6"><div class="ttname"><a href="group__common.html#gaaebfbeb8e50f90057188131228b2e8b6">pcl::concatenatePointCloud</a></div><div class="ttdeci">PCL_EXPORTS bool concatenatePointCloud(const pcl::PCLPointCloud2 &amp;cloud1, const pcl::PCLPointCloud2 &amp;cloud2, pcl::PCLPointCloud2 &amp;cloud_out)</div><div class="ttdoc">Concatenate two pcl::PCLPointCloud2.</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="aff75e94707865b35c4819757087f00ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aff75e94707865b35c4819757087f00ea">&#9670;&nbsp;</a></span>readRange()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::readRange </td>
          <td>(</td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>dst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads <b>count</b> points into memory from the disk container </p>
<p>Reads <b>count</b> points into memory from the disk container, reading at most 2 million elements at a time</p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>index of first point to read from disk </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>offset of last point to read from disk </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>std::vector as destination for points read from disk into memory </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    {</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;      <span class="keywordflow">if</span> (count == 0)</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;      {</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;        <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;      }</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160; </div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      <span class="keywordflow">if</span> ((start + count) &gt; <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a17b1c4c512e5103b8409d4a2f482fea2">size</a> ())</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      {</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;        PCL_ERROR (<span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeDiskContainer::%s] Indicies out of range; start + count exceeds the size of the stored points\n&quot;</span>, __FUNCTION__);</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;        PCL_THROW_EXCEPTION (PCLException, <span class="stringliteral">&quot;[pcl::outofcore::OutofcoreOctreeDiskContainer] Outofcore Octree Exception: Read indices exceed range&quot;</span>);</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;      }</div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;      <a class="code" href="classpcl_1_1_p_c_d_reader.html">pcl::PCDReader</a> reader;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;      <span class="keyword">typename</span> pcl::PointCloud&lt;PointT&gt;::Ptr cloud (<span class="keyword">new</span> <a class="code" href="classpcl_1_1_point_cloud.html">pcl::PointCloud&lt;PointT&gt;</a> ());</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;      </div>
<div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;      <span class="keywordtype">int</span> res = reader.<a class="code" href="classpcl_1_1_p_c_d_reader.html#a21f154e8ce3f4d5e905ecaa395935c42">read</a> (*<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>, *cloud);</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;      (void)res;</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;      assert (res == 0);</div>
<div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;      </div>
<div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;      <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i &lt; cloud-&gt;points.size (); i++)</div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;        dst.push_back (cloud-&gt;points[i]);</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;      </div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<a id="a19ee1979af2203b4ce769ca23dde804f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19ee1979af2203b4ce769ca23dde804f">&#9670;&nbsp;</a></span>readRangeSubSample()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::readRangeSubSample </td>
          <td>(</td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>percent</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>dst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>grab percent*count random points. points are <b>not</b> guaranteed to be unique (could have multiple identical points!) </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>The starting index of points to select </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>The length of the range of points from which to randomly sample (i.e. from start to start+count) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">percent</td><td>The percentage of count that is enough points to make up this random sample </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>std::vector as destination for randomly sampled points; size will be percentage*count </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;    {</div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;      <span class="keywordflow">if</span> (count == 0)</div>
<div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;      {</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;        <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;      }</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160; </div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;      dst.clear ();</div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160; </div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;      uint64_t filestart = 0;</div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;      uint64_t filecount = 0;</div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160; </div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;      int64_t buffcount = -1;</div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160; </div>
<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;      <span class="keywordflow">if</span> (start &lt; filelen_)</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;      {</div>
<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;        filestart = start;</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;      }</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;      <span class="keywordflow">if</span> ((start + count) &lt;= filelen_)</div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;      {</div>
<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;        filecount = count;</div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;      }</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;      {</div>
<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;        filecount = filelen_ - start;</div>
<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;        buffcount = count - filecount;</div>
<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;      }</div>
<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160; </div>
<div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;      uint64_t filesamp = <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span> (percent * <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (filecount));</div>
<div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;      </div>
<div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;      uint64_t buffsamp = (buffcount &gt; 0) ? (<span class="keyword">static_cast&lt;</span>uint64_t <span class="keyword">&gt;</span> (percent * <span class="keyword">static_cast&lt;</span><span class="keywordtype">double</span><span class="keyword">&gt;</span> (buffcount))) : 0;</div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160; </div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;      <span class="keywordflow">if</span> ((filesamp == 0) &amp;&amp; (buffsamp == 0) &amp;&amp; (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a17b1c4c512e5103b8409d4a2f482fea2">size</a> () &gt; 0))</div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;      {</div>
<div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;        <span class="comment">//std::cerr &lt;&lt; &quot;would not add points to LOD, falling back to bernoulli&quot;;</span></div>
<div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;        <a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#af18d037b7f1f1df2b0974fa1a8dba2f0">readRangeSubSample_bernoulli</a> (start, count, percent, dst);</div>
<div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;        <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;      }</div>
<div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160; </div>
<div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;      <span class="keywordflow">if</span> (buffcount &gt; 0)</div>
<div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;      {</div>
<div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;        {</div>
<div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;          boost::mutex::scoped_lock lock (rng_mutex_);</div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160; </div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;          boost::uniform_int &lt; uint64_t &gt; buffdist (0, buffcount - 1);</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;          boost::variate_generator&lt;boost::mt19937&amp;, boost::uniform_int&lt;uint64_t&gt; &gt; buffdie (rand_gen_, buffdist);</div>
<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160; </div>
<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;          <span class="keywordflow">for</span> (uint64_t i = 0; i &lt; buffsamp; i++)</div>
<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;          {</div>
<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;            uint64_t buffstart = buffdie ();</div>
<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;            dst.push_back (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">writebuff_</a>[buffstart]);</div>
<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;          }</div>
<div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;        }</div>
<div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;      }</div>
<div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160; </div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;      <span class="keywordflow">if</span> (filesamp &gt; 0)</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;      {</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;        <span class="comment">//pregen and then sort the offsets to reduce the amount of seek</span></div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;        std::vector &lt; uint64_t &gt; offsets;</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;        {</div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;          boost::mutex::scoped_lock lock (rng_mutex_);</div>
<div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160; </div>
<div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;          offsets.resize (filesamp);</div>
<div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;          boost::uniform_int &lt; uint64_t &gt; filedist (filestart, filestart + filecount - 1);</div>
<div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;          boost::variate_generator&lt;boost::mt19937&amp;, boost::uniform_int&lt;uint64_t&gt; &gt; filedie (rand_gen_, filedist);</div>
<div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;          <span class="keywordflow">for</span> (uint64_t i = 0; i &lt; filesamp; i++)</div>
<div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;          {</div>
<div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;            uint64_t _filestart = filedie ();</div>
<div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;            offsets[i] = _filestart;</div>
<div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;          }</div>
<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        }</div>
<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;        std::sort (offsets.begin (), offsets.end ());</div>
<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160; </div>
<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        FILE* f = fopen (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>-&gt;c_str (), <span class="stringliteral">&quot;rb&quot;</span>);</div>
<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        assert (f != NULL);</div>
<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;        <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> p;</div>
<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;        <span class="keywordtype">char</span>* loc = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span> (&amp;p);</div>
<div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;        <span class="keywordflow">for</span> (uint64_t i = 0; i &lt; filesamp; i++)</div>
<div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;        {</div>
<div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;          <span class="keywordtype">int</span> seekret = _fseeki64 (f, offsets[i] * <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span> (<span class="keyword">sizeof</span>(<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>)), SEEK_SET);</div>
<div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;          (void)seekret;</div>
<div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;          assert (seekret == 0);</div>
<div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;          <span class="keywordtype">size_t</span> readlen = fread (loc, <span class="keyword">sizeof</span>(<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>), 1, f);</div>
<div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;          (void)readlen;</div>
<div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;          assert (readlen == 1);</div>
<div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160; </div>
<div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;          dst.push_back (p);</div>
<div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;        }</div>
<div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;        <span class="keywordtype">int</span> res = fclose (f);</div>
<div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;        (void)res;</div>
<div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;        assert (res == 0);</div>
<div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;      }</div>
<div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;    }</div>
<div class="ttc" id="aclasspcl_1_1outofcore_1_1_outofcore_octree_disk_container_html_af18d037b7f1f1df2b0974fa1a8dba2f0"><div class="ttname"><a href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#af18d037b7f1f1df2b0974fa1a8dba2f0">pcl::outofcore::OutofcoreOctreeDiskContainer::readRangeSubSample_bernoulli</a></div><div class="ttdeci">void readRangeSubSample_bernoulli(const uint64_t start, const uint64_t count, const double percent, AlignedPointTVector &amp;dst)</div><div class="ttdoc">Use bernoulli trials to select points. All points selected will be unique.</div><div class="ttdef"><b>Definition:</b> octree_disk_container.hpp:266</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="af18d037b7f1f1df2b0974fa1a8dba2f0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af18d037b7f1f1df2b0974fa1a8dba2f0">&#9670;&nbsp;</a></span>readRangeSubSample_bernoulli()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">pcl::outofcore::OutofcoreOctreeDiskContainer</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::readRangeSubSample_bernoulli </td>
          <td>(</td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint64_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>percent</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">AlignedPointTVector &amp;&#160;</td>
          <td class="paramname"><em>dst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Use bernoulli trials to select points. All points selected will be unique. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">start</td><td>The starting index of points to select </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>The length of the range of points from which to randomly sample (i.e. from start to start+count) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">percent</td><td>The percentage of count that is enough points to make up this random sample </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>std::vector as destination for randomly sampled points; size will be percentage*count </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;    {</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;      <span class="keywordflow">if</span> (count == 0)</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;      {</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;        <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;      }</div>
<div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160; </div>
<div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;      dst.clear ();</div>
<div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160; </div>
<div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;      uint64_t filestart = 0;</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;      uint64_t filecount = 0;</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160; </div>
<div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;      int64_t buffstart = -1;</div>
<div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;      int64_t buffcount = -1;</div>
<div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160; </div>
<div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;      <span class="keywordflow">if</span> (start &lt; filelen_)</div>
<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;      {</div>
<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        filestart = start;</div>
<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;      }</div>
<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160; </div>
<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;      <span class="keywordflow">if</span> ((start + count) &lt;= filelen_)</div>
<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;      {</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;        filecount = count;</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;      }</div>
<div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;      <span class="keywordflow">else</span></div>
<div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;      {</div>
<div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;        filecount = filelen_ - start;</div>
<div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160; </div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;        buffstart = 0;</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;        buffcount = count - filecount;</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;      }</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160; </div>
<div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;      <span class="keywordflow">if</span> (buffcount &gt; 0)</div>
<div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;      {</div>
<div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;        {</div>
<div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;          boost::mutex::scoped_lock lock (rng_mutex_);</div>
<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;          boost::bernoulli_distribution&lt;double&gt; buffdist (percent);</div>
<div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;          boost::variate_generator&lt;boost::mt19937&amp;, boost::bernoulli_distribution&lt;double&gt; &gt; buffcoin (rand_gen_, buffdist);</div>
<div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160; </div>
<div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;          <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = buffstart; i &lt; static_cast&lt;uint64_t&gt; (buffcount); i++)</div>
<div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;          {</div>
<div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;            <span class="keywordflow">if</span> (buffcoin ())</div>
<div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;            {</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;              dst.push_back (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a947d22c3286be3196ee238eb72cc6572">writebuff_</a>[i]);</div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;            }</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;          }</div>
<div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;        }</div>
<div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;      }</div>
<div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160; </div>
<div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;      <span class="keywordflow">if</span> (filecount &gt; 0)</div>
<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;      {</div>
<div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;        <span class="comment">//pregen and then sort the offsets to reduce the amount of seek</span></div>
<div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;        std::vector &lt; uint64_t &gt; offsets;</div>
<div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;        {</div>
<div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;          boost::mutex::scoped_lock lock (rng_mutex_);</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160; </div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;          boost::bernoulli_distribution&lt;double&gt; filedist (percent);</div>
<div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;          boost::variate_generator&lt;boost::mt19937&amp;, boost::bernoulli_distribution&lt;double&gt; &gt; filecoin (rand_gen_, filedist);</div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;          <span class="keywordflow">for</span> (uint64_t i = filestart; i &lt; (filestart + filecount); i++)</div>
<div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;          {</div>
<div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;            <span class="keywordflow">if</span> (filecoin ())</div>
<div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;            {</div>
<div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;              offsets.push_back (i);</div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;            }</div>
<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;          }</div>
<div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;        }</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;        std::sort (offsets.begin (), offsets.end ());</div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160; </div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;        FILE* f = fopen (<a class="code" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html#a9b40c31888d5477c0e55223b8f66e602">disk_storage_filename_</a>-&gt;c_str (), <span class="stringliteral">&quot;rb&quot;</span>);</div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;        assert (f != NULL);</div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;        <a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> p;</div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;        <span class="keywordtype">char</span>* loc = <span class="keyword">reinterpret_cast&lt;</span><span class="keywordtype">char</span>*<span class="keyword">&gt;</span> (&amp;p);</div>
<div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;        </div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;        uint64_t filesamp = offsets.size ();</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;        <span class="keywordflow">for</span> (uint64_t i = 0; i &lt; filesamp; i++)</div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;        {</div>
<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;          <span class="keywordtype">int</span> seekret = _fseeki64 (f, offsets[i] * <span class="keyword">static_cast&lt;</span>uint64_t<span class="keyword">&gt;</span> (<span class="keyword">sizeof</span>(<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>)), SEEK_SET);</div>
<div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;          (void)seekret;</div>
<div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;          assert (seekret == 0);</div>
<div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;          <span class="keywordtype">size_t</span> readlen = fread (loc, <span class="keyword">sizeof</span>(<a class="code" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>), 1, f);</div>
<div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;          (void)readlen;</div>
<div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;          assert (readlen == 1);</div>
<div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160; </div>
<div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;          dst.push_back (p);</div>
<div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;        }</div>
<div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160; </div>
<div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;        fclose (f);</div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;      }</div>
<div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;    }</div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>outofcore/include/pcl/outofcore/<a class="el" href="octree__disk__container_8h_source.html">octree_disk_container.h</a></li>
<li>outofcore/include/pcl/outofcore/impl/<a class="el" href="octree__disk__container_8hpp_source.html">octree_disk_container.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><b>outofcore</b></li><li class="navelem"><a class="el" href="classpcl_1_1outofcore_1_1_outofcore_octree_disk_container.html">OutofcoreOctreeDiskContainer</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
